/*
 * Copyright 2010-2011 CGT&DC ISA RAS
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package websolve.workflow.runtime.test.loop.implicit;

import websolve.workflow.runtime.Task;
import websolve.workflow.runtime.TaskState;

public class RepeatedTask extends Task {

    private int count;

    public RepeatedTask(String name) {
        super(name);
        addInput("in");
        addInput("iterations");
        addOutput("out");
        count = 0;
    }

    @Override
    public void run() {
        setState(TaskState.RUNNING);

        int in = (Integer) getInputValue("in");

        if (count < (Integer) getInputValue("iterations")) {

            setInputValue("in", ++in);
            setState(TaskState.WAITING);
            count++;

        } else {

            setOutputValue("out", in);
            setState(TaskState.DONE);

        }

    }

}
